<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // console.log(this); //window  全局作用域this 

        // 声明式的函数 
        function fn1(){
            var num = 100;
            console.log(this);  // window 函数内部 this
        }

        // fn1();

        // 赋值式的函数 
        var fn2 = function(){
            console.log(this); // window 函数内的this
        }

        // fn2();

        // 上面 this 代表 window
        // 对象函数

        var person = {
            name:'张三',
            age:18,
            sing:function(){
                console.log(this,'级你太美'); // this代表这个对象 
            }
        }
        // console.log(person.name);
        // person.sing()

        // 定时器
        // setTimeout(function(){
        //     console.log(this);  // window
        // },1000)


        // 事件处理函数 

        // document.onclick = function(){
        //     console.log(this); #document
        // }


        // window.onclick = function(){
        //     console.log(this); // window 
        // }

        // var arr = [1,2,3]
        // arr.forEach(function(item){
        //     console.log(this);
        // });


        // 总结:

        // 全局作用域  this  -> window 
        // 声明式函数  this -> window 
        // 赋值式函数  this -> window
        // 对象函数    this -> 对象本身
        // 定时器      this -> window 
        // 事件处理函数  this -> 事件源  
        // 数组高级方法   this -> window 
    </script>
</body>
</html>